package com.liuugoqing.structural.flyweight;

import java.util.HashMap;

/**
 *      享元工厂（Flyweight Factory）角色 ：负责创建和管理
 * 享元角色。当客户对象请求一个享元对象时，享元工厂检査系统中是
 * 否存在符合要求的享元对象，如果存在则提供给客户；如果不存在的
 * 话，则创建一个新的享元对象。
 * @Author : liugq
 * @Date : 2022/7/5 16:41
 * @See : 参考类
 * @Since： JDK1.8
 * @Version : 1.0
 */
public class BoxFactory {
    //单例实现
    private static HashMap<String,AbstractBox> map = new HashMap<>();
    private static final BoxFactory boxFactory = new BoxFactory();
    static {
        map.put("I",new IBox());
        map.put("O",new OBox());
    }

    private BoxFactory(){}

    public AbstractBox getBox(String key){
        return map.get(key);
    }

    /**
     * 私有化了构造，就得开出一个静态方法，获取对象
     * @return
     */
    public static BoxFactory getInstance(){
        return boxFactory;
    }
}
